#ifndef ZUC_TASK_HH
#define ZUC_TASK_HH
#include "nml.hh"
#include <vector>
using namespace std;
//#include "taskclass.hh"
extern NMLmsg* zucTaskCommand;
extern int stepping;
extern int steppingWait;
extern int zucTaskQueueCommand(NMLmsg* cmd);

int LogScriptInfo(Interp* interpPtr);

// Returns 0 if all joints are homed, 1 if any joints are un-homed.
int all_homed(void);
int zucTaskInit();
int zucTaskHalt();
int zucTaskAbort();
int zucTaskSetMode(int mode);

int zucTaskSetState(int state, int robid);
int zucTaskPlanInit();
int zucTaskPlanSetWait();
int zucTaskPlanIsWait();
int zucTaskPlanClearWait();
int zucTaskPlanSynch();
int zucTaskPlanSetOptionalStop(bool state);
int zucTaskPlanSetBlockDelete(bool state);
void zucTaskPlanExit();
void zucTaskSetStartLine(int startLine);
int zucTaskPlanOpen(const char* file);
int zucTaskPlanRead();
int zucTaskPlanExecute(const char* command);
int zucTaskPlanExecute(const char* command, int line_number);  //used in case of MDI to pass the pseudo line number to interp
int zucTaskPlanPause();
int zucTaskPlanResume();
int zucTaskPlanClose();
int zucTaskPlanReset();

int zucTaskPlanLine();
int zucTaskPlanLevel();
int zucTaskPlanCommand(char* cmd);

int zucTaskUpdate(ZUC_TASK_STAT* stat);

int zucTaskTimeoutUpdate();

int zucTaskSetUserDefinedVar(int id, double value);
int zucSetMulThreadId(int id);

#endif
